package com.xcloud.component.swagger.config;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig{

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
				.version("1.0.0")
                .title("xCloud 文档")
                .description("xCloud 文档")
				/*.contact(new Contact("xiaobin", "http://www.xcloud.com", "sobne.cn@gmail.com"))*/
                .termsOfServiceUrl("www.xcloud.com")
                /*.licenseUrl("#")*/
                .build();
    }
    @Bean(value = "xCloudApi")
    public Docket XcloudApi() {
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                //分组名称
                .groupName("1.X版本")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("com.springclouddemo"))
                .paths(PathSelectors.any())
                .build();
        docket.enable(true);
        return docket;
    }
	/*
	@Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }
	*/
    /**
     * 项目启动时，默认打开swagger-ui界面
     * @param registry
     */
//    public void addViewControllers(ViewControllerRegistry registry) {
//        registry.addRedirectViewController("/","swagger-ui.html");
//        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
//    }
}
